//
// Created by songgf on 25-3-20.
//

#ifndef MAYO_BDFTOINPCONVERT_H
#define MAYO_BDFTOINPCONVERT_H

#include <string>
#include <vector>

/**
 * @brief bdf转inp类
 */
class BdfToInpConvert {
  struct Node {
    int id;
    double x, y, z;
  };

  struct Element {
    int id;
    std::string type;
    std::vector<int> nodes;
  };

public:
  BdfToInpConvert();
  ~BdfToInpConvert();

  // 转换BDF为INP
  int convert(const std::string& bdfPath, const std::string& inpPath);

private:
// 解析BDF文件
  int parseBdfFile(const std::string& bdfPath);
  void parseNode(const std::string& line);
  void parseElement(const std::string& line);

//BDF 单元类型映射到INP
  std::string mapBdfElementTypeToInp(const std::string& bdfType);

//  生成INP文件
  int generateInpFil1e(const std::string& path);

//  工具方法
  static void trim(std::string& s);
  static std::vector<std::string> split(const std::string& s, char delimiter);
private:
  std::vector<Node> nodes;
  std::vector<Element> elements;
};

#endif // MAYO_BDFTOINPCONVERT_H
